package thread.synchronize;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 真香
 * @create 2021-06-04 16:45
 */
public class UnsafeList {
    public static void main(String[] args)  {
        List<String> lists = new ArrayList<>();

        for (int i = 0; i < 10000; i++) {

            new Thread(()-> {
                // synchronized 锁住需要增删改的对象 ，synchronized的本质是一个队列+锁，比喻排队上厕所
                synchronized (lists) {
                    lists.add(Thread.currentThread().getName());
                }

            }).start();

        }

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        /**
         * 理想状态是输出10000个，但是由于ArrayList是线程不安全的，在多个线程操作同一个
         * 方法，会将前面添加的覆盖。
          */
        System.out.println(lists.size());


    }

}
